package com.Cychat.doctor.service;

import com.Cychat.commons.entity.pojo.Appointment;
import com.Cychat.commons.entity.pojo.Drug;
import com.Cychat.commons.entity.vo.AppointmentDetailVo;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.Cychat.commons.entity.pojo.TreatmentRecord;
import com.Cychat.commons.entity.vo.TreatmentVo;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

public interface TreatmentRecordService extends IService<TreatmentRecord> {

    // 分页查询诊疗VO列表（关联所有信息）
    IPage<TreatmentVo> getTreatmentVoPage(Page<TreatmentRecord> page, Integer doctorId, Integer appointmentId, String keyword);

    // 根据ID查询诊疗VO详情
    TreatmentVo getTreatmentVoById(Integer treatmentId);

    // 新增诊疗记录（校验drugIds格式）
    boolean saveTreatment(TreatmentRecord treatment);

    // 编辑诊疗记录
    boolean updateTreatment(TreatmentRecord treatment);

    // 新增方法：获取医生的预约列表（分页）
    IPage<AppointmentDetailVo> getDoctorAppointmentPage(Page<Appointment> page, Integer doctorId);

    /**
     * 查询当前医生的所有诊疗记录（连表）
     * @param doctorId 医生ID
     * @return 诊疗VO列表
     */
    List<TreatmentVo> getDoctorTreatmentList(Integer doctorId);

    /**
     * 查询当前医生的诊疗详情（连表+权限校验）
     * @param treatmentId 诊疗ID
     * @param doctorId 医生ID
     * @return 诊疗VO详情
     */
    TreatmentVo getDoctorTreatmentDetail(Integer treatmentId, Integer doctorId);

}